1. Technical Field
The present invention relates in general to a system and method for using a plurality of processors as virtual devices. More particularly, the present invention relates to a system and method for using queue management to assign virtual device tasks to the plurality of processors.
2. Description of the Related Art
Computer systems have attained widespread use for providing computer power to many segments of today's modern society. A personal computer system can usually be defined as a desk top, floor standing, or portable microcomputer that includes a system unit having a system processor and associated volatile and non-volatile memory, a display monitor, a keyboard, one or more diskette drives, a fixed disk storage device and an optional printer. One of the distinguishing characteristics of these systems is the use of a system board to electrically connect these components together.
To perform additional functions or add additional devices, firmware cards are often added. For example, a video card is often added to perform 2D and 3D geometry functions and display graphics on the display monitor. Other devices that are often added to computer systems include modems, LAN cards, drive controllers, and specialized cards to perform mathematical functions. Adding firmware cards to a computer system requires additional space on the system board to connect the cards. In addition, the firmware cards require power that is supplied from the computer system and generate additional heat to the computer system. The additional power and heat are typically encountered regardless of whether the card is being fully utilized.
One challenge of using devices supplied by firmware cards is the heat and power requirements. Another challenge is that the firmware cards are often difficult to upgrade without removing the old card from the system board and replacing it with a new card. To offset these challenges, some functions that were performed by firmware cards are being performed by the computer system's central processing unit (CPU). For example, a “soft modem” provides the modulation-demodulation functions traditionally performed by a hardware modem in software. A challenge of these “soft” devices, however, is that they provide additional computational burdens on the already-busy CPU and, generally, perform slower than firmware based devices.
Multiple processors are more often being employed in information handling systems that are becoming increasingly complex. Multiple processors provides a system with increased computing power as compared with systems with a single microprocessor. One challenge, however, faced by designers of systems with multiple processors is the usage of internal and external devices. Each processor typically uses a bus, such as a PCI bus, to communicate with internal and external devices. Computers with multiple processors traditionally have a homogeneous set of processors. In other words, the CPUs are all of the same type so that they can share work and perform the same instruction sets. A challenge, therefore, of computer systems with multiple processors is that shortcomings of the processor are common throughout the processor mix.
What is needed, therefore, is a system and method that includes a heterogeneous mix of processors with some of the processors adapted to perform high speed processes, such as emulating a device function, on behalf of other processors. What is further needed, is a common memory that is shared by the heterogeneous set of processors to facilitate communication of data between the various types of processors. Furthermore, what is needed queue management of queues that correspond to virtual devices so that tasks performed on the plurality of processors are performed in an efficient manner.